package com.example.tkserver.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * rabbitMq配置
 */
@Configuration
public class RabbitMqConfig {

    public static final String COMMON_TOPIC = "commonTopic";
    public static final String COMMON_EXCHANGE = "commonExchange";

    public static final String DIRECT_EXCHANGE = "directExchange";

    @Bean
    public Queue commonFanoutQueue() {
        /**
         * 1、name:    队列名称
         * 2、durable: 是否持久化
         * 3、exclusive: 是否独享、排外的。如果设置为true，定义为排他队列。则只有创建者可以使用此队列。也就是private私有的。
         * 4、autoDelete: 是否自动删除。也就是临时队列。当最后一个消费者断开连接后，会自动删除。
         * */
        return new Queue(COMMON_TOPIC, true,false,false);
    }
    @Bean
    public FanoutExchange commonFanoutExchange() {
        //Fanout交换机
        return new FanoutExchange(COMMON_EXCHANGE, true, false);
    }
    @Bean
    public Binding bindFanout() {
        //链式写法，绑定交换机和队列
        return BindingBuilder
                //绑定队列
                .bind(commonFanoutQueue())
                //到交换机
                .to(commonFanoutExchange());
    }

    @Bean
    public DirectExchange directExchange(){
        return new DirectExchange(DIRECT_EXCHANGE,true,false);
    }

}